#ifndef RACHEL17_H
#define RACHEL17_H

#include <QObject>
#include <QSet>
#include <QMap>
#include <QString>
#include <QVector>
#include <QPair>

class Rachel17 : public QObject
{
    Q_OBJECT

private:
    typedef struct tokenizer_s {
        size_t argc;
        wchar_t **argv;
    } tokenizer_t;

public:
    explicit Rachel17(QObject *parent = 0);

    int learn(const QString &body);
    QString reply(const QString message);

    int LoadSettings(void);
    int SaveSettings(void);

    int num_contexts;

    QSet<QString> lines;
    QMap<QString, QVector<QPair<QSet<QString>::iterator,size_t> > > words;
    tokenizer_t* tokenizer;
    
signals:
    
public slots:
    
};

#endif // RACHEL17_H
